[iOS] chatworkのプロフィール(名前)を変更するアプリを書いてみた
1 chatwork
chatworkは、グループチャットやタスク管理などの機能を有し、ビジネスの場でも幅広く使われているコミュニケーションツールです。
このようなコミュニケーションツールの使い方の一つとして、プロフィール名のところに現在の勤務場所や、状態を追加して、参加者にアナウンスするという使い方をしている方も多いのではないでしょうか?
chatworkでプロフィールの名前変更は、メニューから行いますが、少し階層があるため、小まめに変更するにはちょっと辛いかも知れません。
また、スマフォのアプリでは、このメニュー自体が表示されないため、不便に感じている方もおられるのでは無いでしょうか。
今回は、このプロフィール名を手軽に変更できるiPhoneアプリを作成してみました。 なお、このプロフィール変更のAPIは、現在提供されていないため、処理はJavaScriptで記述しました。
2 CWChanger
最初に利用している様子をご覧ください。
変更するメッセージは、幾つかの定型を用意しておくことで、切り替えて利用できます。
3 有料プラン
chatworkは、無料でも利用可能ですが、有料のビジネスプランもあります。 利用形態によってアクセス先(URL)が変わりますので、本アプリでは、ログイン画面で設定するようになっています。
有料プランでご利用の方は、ログイン画面で、「契約名を指定してください」のところをタップしてください。 表示されたポップアップに契約名を入力します。
後の操作は同じです。
4 拡張UIWebView
本アプリでは、JavaScriptを実行できるようにUIWebViewを拡張しました。
UIWebViewでは、stringByEvaluatingJavaScriptFromStringでJavaScriptの実行が可能ですが、それを使用して、itemを取得したり、値を設定したり、また、クリックしたりしています。
そして、この拡張UIWebViewをシングルトンで作成し、Viewに追加しないで利用しています。
下記は、拡張したUIWebViewの抜粋です。詳しくは、GitHubのコードをご残照ください。
class ExWebView: UIWebView { var script = "" func callJs(js: String) -> String { return self.stringByEvaluatingJavaScriptFromString(js)! } internal class var sharedInstance: ExWebView { struct Static { static var onceTaken: dispatch_once_t = 0 static var instance: ExWebView? = nil } dispatch_once(&Static.onceTaken) { Static.instance = ExWebView() } return Static.instance! } func setValueById(id: String, value: String) { append("var element = document.getElementById('\(id)');element.value = '\(value)';") } func clickById(id: String) -> String { append ("document.getElementById('\(id)').click();") return exec() } private func append(str: String) { script = script + str } func exec() -> String { let result = callJs(script) script = "" return result } }
5 最後に
アプリでアクセスできるようになると、今度は、立ち寄る場所にBeacon置いて、自動的にプロフィール変更したりとか夢が広がります・・・
しかし、本アプリは、まだブラウザに表示されるhtml上のタグなどをたよりに動作しているため、非常に不安定です。 早くAPIが提供されて、ちゃんとしたアプリに修正できることを望みます。
[GitHub] https://github.com/furuya02/CWChanger(Xcode7.3)